package routers

import (
	"config-client-v1/controller/admin"
	"config-client-v1/controller/common"
	"config-client-v1/middleware"
	"github.com/gin-gonic/gin"
)

func AdminRouterInit(r *gin.Engine) {
	adminRouters := r.Group("/admin")
	adminRouters.Use(middleware.CheckAdminLogin)
	// 设置中间件
	{
		adminRouters.Any("/info", admin.DebugController{}.Info) // 查看程序运行信息, 协程数量信息...
		adminRouters.Any("/test", admin.DebugController{}.Test)
		adminRouters.Any("/reset_cache", admin.DebugController{}.ResetCache)
		adminRouters.Any("/ws_client_info", admin.DebugController{}.WSClientInfo)            // 查看 websocket 客户端连接情况
		adminRouters.Any("/variables_init", admin.DebugController{}.VariablesInit)           // 初始化工程下的全局变量
		adminRouters.Any("/variables_info", admin.DebugController{}.VariablesInfo)           // 查看全局变量
		adminRouters.Any("/alert_data_map_info", admin.DebugController{}.AlertDataMapInfo)   // 查看内存中最近一次报警变量信息
		adminRouters.Any("/mem_value_update", admin.DebugController{}.MemValueUpdate)        // 内存变量值修改
		adminRouters.Any("/running_fse", admin.DebugController{}.RunningFSE)                 // 查看运行中的FSE信息
		adminRouters.Any("/temp_fse", admin.DebugController{}.TempFSE)                       // 查看临时上传的FSE
		adminRouters.Any("/exp_alarm_items_info", admin.DebugController{}.ExpAlarmItemsInfo) // 查看实验报警项信息
		adminRouters.Any("/std_log_info", admin.DebugController{}.StdLogInfo)                // 控制条标准日志输出

		// 登录态管理; 不需要登录
		adminRouters.Any("/captcha", admin.LoginController{}.Captcha)        // 获取验证码
		adminRouters.Any("/do_login", admin.LoginController{}.DoLogin)       // 登录
		adminRouters.Any("/login_info", admin.LoginController{}.LoginInfo)   // 登录态信息
		adminRouters.Any("/check_token", admin.LoginController{}.CheckToken) // 验证token
		// 公共词典
		adminRouters.Any("/dict_list", admin.HomeController{}.DictList) // 词典列表
		// 工程管理
		adminRouters.Any("/project/list", admin.ProjectController{}.List)                   // 工程列表
		adminRouters.Any("/project/save", admin.ProjectController{}.Save)                   // 工程保存
		adminRouters.Any("/project/start", admin.ProjectController{}.Start)                 // 运行工程
		adminRouters.Any("/project/stop", admin.ProjectController{}.Stop)                   // 停止工程
		adminRouters.Any("/project/server_config", admin.ProjectController{}.ServerConfig)  // 服务器配置
		adminRouters.Any("/project/enter", admin.ProjectController{}.Enter)                 // 进入工程
		adminRouters.Any("/project/detail", admin.ProjectController{}.Detail)               // 工程详情
		adminRouters.Any("/project/delete", admin.ProjectController{}.Delete)               // 工程删除
		adminRouters.Any("/project/export", admin.ProjectController{}.Export)               // 工程导出
		adminRouters.Any("/project/export_app", admin.ProjectController{}.ExportApp)        // 测试端程序导出
		adminRouters.Any("/project/export_in", admin.ProjectController{}.ExportIn)          // 工程导出(登录后)
		adminRouters.Any("/project/export_app_in", admin.ProjectController{}.ExportAppIn)   // 测试端程序导出(登录后)
		adminRouters.Any("/project/import_check", admin.ProjectController{}.ImportCheck)    // 工程导入检验
		adminRouters.Any("/project/import_do", admin.ProjectController{}.ImportDo)          // 工程导入
		adminRouters.Any("/project/time_sync", admin.ProjectController{}.TimeSync)          // 时间同步
		adminRouters.Any("/upload", common.Common{}.UploadFile)                             // 文件上传
		adminRouters.Any("/running_equip_info", admin.ProjectController{}.RunningEquipInfo) // 查看运行中的设备

		// FS自研设备管理
		adminRouters.Any("/fs/list", admin.FSController{}.List)                                             // FS设备列表
		adminRouters.Any("/fs/detail", admin.FSController{}.Detail)                                         // FS设备详情
		adminRouters.Any("/fs/data_scale", admin.FSController{}.DataScale)                                  // FS设备数据规模查看
		adminRouters.Any("/fs/delete", admin.FSController{}.Delete)                                         // FS设备删除
		adminRouters.Any("/fs/save", admin.FSController{}.Save)                                             // FS设备编辑
		adminRouters.Any("/fs/update_stage", admin.FSController{}.UpdateStage)                              // FS设备修阶段状态
		adminRouters.Any("/fs/gen_module_names", admin.FSController{}.GenModuleNames)                       // 自动生成模块名称
		adminRouters.Any("/fs/module_type_list", admin.FSController{}.ModuleTypeList)                       // 模块类型列表
		adminRouters.Any("/fs/channel_list", admin.FSController{}.ChannelList)                              // 变量列表, 通道列表
		adminRouters.Any("/fs/start", admin.FSController{}.FSStart)                                         // FS运行
		adminRouters.Any("/fs/stop", admin.FSController{}.FSStop)                                           // FS停止
		adminRouters.Any("/fs/status", admin.FSController{}.FSStatus)                                       // FS运行状态查看
		adminRouters.Any("/fs/ip_read", admin.FSController{}.IPRead)                                        // IP读取
		adminRouters.Any("/fs/ip_write", admin.FSController{}.IPWrite)                                      // IP设置
		adminRouters.Any("/fs/download_api_list", admin.FSController{}.DownloadApiList)                     // 下载API列表
		adminRouters.Any("/fs/upload_api_list", admin.FSController{}.UploadApiList)                         // 通用生成上载接口
		adminRouters.Any("/fs/upload_data_scale", admin.FSController{}.UploadDataScale)                     // 单条上载获取数据规模
		adminRouters.Any("/fs/download_history_log", admin.FSController{}.DownloadHistoryLog)               // 下载记录
		adminRouters.Any("/fs/basic_read", admin.FSController{}.BasicRead)                                  // FS 基本信息读取
		adminRouters.Any("/fs/model_read", admin.FSController{}.ModelRead)                                  // 模型控制信息读取
		adminRouters.Any("/fs/first_handshake", admin.FSController{}.FirstHandShake)                        // 运行首次握手
		adminRouters.Any("/fs/first_sync", admin.FSController{}.FirstSync)                                  // 运行首次同步发送
		adminRouters.Any("/fs/sync", admin.FSController{}.Sync)                                             // 运行同步发送
		adminRouters.Any("/fs/run_sync_modify_module_value", admin.FSController{}.RunSyncModifyModuleValue) // 按自研协议excel文档修改模块AI~Other和模型值
		adminRouters.Any("/fs/model_update_addr_ev", admin.FSController{}.ModelUpdateAddrEV)                // 修改模型的变量地址和字段有效值
		adminRouters.Any("/fs/upload_history_list", admin.FSController{}.UploadHistoryList)                 // 上载记录
		//adminRouters.Any("/fs/upload_history_handle", admin.FSController{}.UploadHistoryHandle)             // 上载记录处理
		//adminRouters.Any("/fs/upload_history_handle_multi", admin.FSController{}.UploadHistoryHandleMulti)  // 上载记录批量处理

		// FS模块配置管理
		adminRouters.Any("/fs/module_list", admin.FSController{}.ModuleList)                     // 模块列表
		adminRouters.Any("/fs/module_add", admin.FSController{}.ModuleAdd)                       // 新增添加
		adminRouters.Any("/fs/module_delete", admin.FSController{}.ModuleDelete)                 // 模块删除
		adminRouters.Any("/fs/module_delete_by_type", admin.FSController{}.ModuleDeleteByType)   // 按类型删除模块, 批量删除
		adminRouters.Any("/fs/module_download", admin.FSController{}.ModuleDownload)             // FS模块配置下载
		adminRouters.Any("/fs/module_upload", admin.FSController{}.ModuleUpload)                 // FS模块配置下载
		adminRouters.Any("/fs/module_upload_api_list", admin.FSController{}.ModuleUploadApiList) // 模块上载API列表

		// FS模型配置管理
		adminRouters.Any("/fs/model_desc", admin.FSController{}.ModelDesc)                     // 模型列表
		adminRouters.Any("/fs/model_list", admin.FSController{}.ModelList)                     // 模型列表
		adminRouters.Any("/fs/model_save", admin.FSController{}.ModelSave)                     // 模型新增保存
		adminRouters.Any("/fs/model_delete", admin.FSController{}.ModelDelete)                 // 模型删除
		adminRouters.Any("/fs/model_download", admin.FSController{}.ModelDownload)             // 模型配置下载
		adminRouters.Any("/fs/model_upload", admin.FSController{}.ModelUpload)                 // 模型配置上载
		adminRouters.Any("/fs/model_upload_api_list", admin.FSController{}.ModelUploadApiList) // 模型上载API列表
		adminRouters.Any("/fs/model_plc_import", admin.FSController{}.ModelPLCImport)          // PLC模型变量导入

		// 第三方协议设备管理
		adminRouters.Any("/ppe/list", admin.PPEController{}.List)                       // 协议设备列表
		adminRouters.Any("/ppe/save", admin.PPEController{}.Save)                       // 协议设备保存
		adminRouters.Any("/ppe/detail", admin.PPEController{}.Detail)                   // 协议设备详情
		adminRouters.Any("/ppe/delete", admin.PPEController{}.Delete)                   // 协议设备删除
		adminRouters.Any("/ppe/start", admin.PPEController{}.PPEStart)                  // 协议设备启动
		adminRouters.Any("/ppe/stop", admin.PPEController{}.PPEStop)                    // 协议设备停止
		adminRouters.Any("/ppe/status", admin.PPEController{}.PPEStatus)                // 协议设备状态
		adminRouters.Any("/ppe/opc_variable_add", admin.PPEController{}.OPCVariableAdd) // OPC Client 添加变量
		adminRouters.Any("/ppe/opc_point_add", admin.PPEController{}.OPCPointAdd)       // OPC Server 添加点位
		adminRouters.Any("/ppe/opc_point_list", admin.PPEController{}.OPCPointList)     // OPC Server 点位列表
		adminRouters.Any("/ppe/opc_point_delete", admin.PPEController{}.OPCPointDelete) // OPC Server 点位删除
		adminRouters.Any("/ppe/opc_read_nodes", admin.PPEController{}.OPCReadNodes)     // OPC Client 查询点位(上载)
		adminRouters.Any("/ppe/opc_nodes_list", admin.PPEController{}.OPCNodesList)     // OPC读取节点记录
		adminRouters.Any("/ppe/opc_nodes_handle", admin.PPEController{}.OPCNodesHandle) // OPC读取节点批量处理

		adminRouters.Any("/ppe/can_model_list", admin.PPEController{}.CANModelList)     // CAN模型列表
		adminRouters.Any("/ppe/can_model_save", admin.PPEController{}.CANModelSave)     // CAN模型新增|编辑
		adminRouters.Any("/ppe/can_model_delete", admin.PPEController{}.CANModelDelete) // CAN模型删除

		adminRouters.Any("/ppe/modbus_server_db_save", admin.PPEController{}.ModbusServerDBSave)     // modbus server 添加从站DB和点位
		adminRouters.Any("/ppe/modbus_server_db_list", admin.PPEController{}.ModbusServerDBList)     // modbus server 从站列表
		adminRouters.Any("/ppe/modbus_server_db_delete", admin.PPEController{}.ModbusServerDBDelete) // modbus server 从站DB删除

		// 第三方帧管理
		adminRouters.Any("/frame/list", admin.FrameController{}.List)                                 // 帧列表
		adminRouters.Any("/frame/relate_available_list", admin.FrameController{}.RelateAvailableList) // 可关联的帧列表
		adminRouters.Any("/frame/save", admin.FrameController{}.Save)                                 // 帧保存
		adminRouters.Any("/frame/detail", admin.FrameController{}.Detail)                             // 帧详情
		adminRouters.Any("/frame/delete", admin.FrameController{}.Delete)                             // 帧删除
		adminRouters.Any("/frame/send", admin.FrameController{}.Send)                                 // 帧事件触发

		// 变量管理
		adminRouters.Any("/variable/list", admin.VariableController{}.List)                                              // 变量列表
		adminRouters.Any("/variable/save", admin.VariableController{}.Save)                                              // 变量修改
		adminRouters.Any("/variable/detail", admin.VariableController{}.Detail)                                          // 变量详情(通过ID查看)
		adminRouters.Any("/variable/addr_detail", admin.VariableController{}.AddrDetail)                                 // 变量详情(通过addr查看)
		adminRouters.Any("/variable/delete", admin.VariableController{}.Delete)                                          // 变量删除
		adminRouters.Any("/variable/multi_delete", admin.VariableController{}.MultiDelete)                               // 变量批量删除
		adminRouters.Any("/variable/ev_update", admin.VariableController{}.EVUpdate)                                     // 有效值修改
		adminRouters.Any("/variable/limiting_value_update", admin.VariableController{}.LimitingValueUpdate)              // 限值设置(多个)
		adminRouters.Any("/variable/limiting_value_update_single", admin.VariableController{}.LimitingValueUpdateSingle) // 限值设置(单个)
		adminRouters.Any("/variable/limiting_enable", admin.VariableController{}.LimitingEnable)                         // 限值设置启用
		adminRouters.Any("/variable/rc_formula_list", admin.VariableController{}.RCFormulaList)                          // 量程转换公式列表

		adminRouters.Any("/variable/mem_value_update", admin.VariableController{}.MemValueUpdate) // 内存变量值修改
		adminRouters.Any("/variable/mem_value_read", admin.VariableController{}.MemValueRead)     // 读取内存变量值
		adminRouters.Any("/variable/write", admin.VariableController{}.Write)                     // 修改变量

		// 报警管理: 报警暂时只做几个, 只能修改部分字段, 不可新增
		adminRouters.Any("/alert/list", admin.AlertController{}.List)     // 报警配置列表
		adminRouters.Any("/alert/save", admin.AlertController{}.Save)     // 报警配置修改
		adminRouters.Any("/alert/delete", admin.AlertController{}.Delete) // 报警配置删除

		// 画面配置
		adminRouters.Any("/page_group/list", admin.PageGroupController{}.List)            // 画面分组列表
		adminRouters.Any("/page_group/save", admin.PageGroupController{}.Save)            // 画面分组保存
		adminRouters.Any("/page_group/detail", admin.PageGroupController{}.Detail)        // 画面分组详情
		adminRouters.Any("/page_group/delete", admin.PageGroupController{}.Delete)        // 画面分组删除
		adminRouters.Any("/page/list", admin.PageController{}.List)                       // 画面列表
		adminRouters.Any("/page/save", admin.PageController{}.Save)                       // 画面保存
		adminRouters.Any("/page/report_form_save", admin.PageController{}.ReportFormSave) // 画面报表保存
		adminRouters.Any("/page/report_form_list", admin.PageController{}.ReportFormList) // 画面报表查看
		adminRouters.Any("/page/set_default", admin.PageController{}.SetDefault)          // 设置默认页
		adminRouters.Any("/page/detail", admin.PageController{}.Detail)                   // 画面详情
		adminRouters.Any("/page/delete", admin.PageController{}.Delete)                   // 画面删除
		adminRouters.Any("/page/copy", admin.PageController{}.Copy)                       // 画面复制
		adminRouters.Any("/page/combo_save", admin.PageController{}.ComboSave)            // 保存组合框
		adminRouters.Any("/page/combo_delete", admin.PageController{}.ComboDelete)        // 删出组合框
		adminRouters.Any("/page/combo_list", admin.PageController{}.ComboList)            // 组合框列表
		adminRouters.Any("/page/all_model_list", admin.PageController{}.AllModelList)     // 全部模型列表

		// 用户管理,角色,菜单,权限配置
		adminRouters.Any("/user/list", admin.UserController{}.List)         // 用户列表
		adminRouters.Any("/user/save", admin.UserController{}.Save)         // 用户保存
		adminRouters.Any("/user/detail", admin.UserController{}.Detail)     // 用户详情
		adminRouters.Any("/user/delete", admin.UserController{}.Delete)     // 用户删除
		adminRouters.Any("/user/status", admin.UserController{}.Status)     // 用户状态
		adminRouters.Any("/role/list", admin.UserController{}.RoleList)     // 角色列表
		adminRouters.Any("/role/detail", admin.UserController{}.RoleDetail) // 角色详情
		adminRouters.Any("/role/save", admin.UserController{}.RoleSave)     // 角色保存
		adminRouters.Any("/role/delete", admin.UserController{}.RoleDelete) // 角色删除
		adminRouters.Any("/role/status", admin.UserController{}.RoleStatus) // 角色状态

	}
}
